package com.itbaizhan;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
/*通过Cookie实现客户端与服务端会话的维持
需求：当客户端浏览器第一次访问Servlet时响应“您好，欢迎您第一次访问！”，
第二次访问时响应“欢迎您回来！”。*/

/*Cookie总结
Cookie对于存储内容是基于明文的方式存储的，所以安全性很低。
不要在Cookie中存放敏感数据。在数据存储时，虽然在Servlet4.0中Cookie
支持中文，但是建议对Cookie中存放的内容做编码处理，也可提高安全性。*/
public class WelcomeServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获得cookie对象
        Cookie[] cookies = req.getCookies();

        boolean flag = false;
        if(cookies != null){
            for(Cookie cookie:cookies){
                if("welcome".equals(cookie.getName())){
                    flag=true;
                    break;
                }
            }
        }

        //设置浏览器响应编码 (浏览器中有中文显示)
        resp.setContentType("text/plain;charset=utf-8");
        PrintWriter pw =resp.getWriter();
        //当客户端浏览器第一次访问时cookie还没有数据，所以flag = false
        if(flag){
            pw.println("欢迎您回来！");
        }else {
            pw.println("您好，欢迎您第一次访问！");
            //创建cookie对象，cookie中的key(name)值必须是welcome,
            // 因为上面用welcome判断是否第一次访问，value可以是空值，也可以其他的值
            //Cookie cookie = new Cookie(URLEncoder.encode("welcome","utf-8"),URLEncoder.encode("welcome","utf-8"));
            Cookie cookie = new Cookie("welcome","welcome");
            //在浏览器存在2分钟
            cookie.setMaxAge(120);
            //添加到浏览器中
            resp.addCookie(cookie);

        }
    }
}
